package com.atguigu.single;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

public class JedisPool_Test {
    private static JedisPool jedisPool = null;

    public static Jedis getJedis(){
        if (jedisPool==null){
            //主要配置
            JedisPoolConfig jedisPoolConfig =new JedisPoolConfig();
            jedisPoolConfig.setMaxTotal(10); //最大可用连接数
            jedisPoolConfig.setMaxIdle(5); //最大闲置连接数
            jedisPoolConfig.setMinIdle(5); //最小闲置连接数
            jedisPoolConfig.setBlockWhenExhausted(true); //连接耗尽是否等待
            jedisPoolConfig.setMaxWaitMillis(2000); //等待时间
            jedisPoolConfig.setTestOnBorrow(true); //取连接的时候进行一下测试 ping pong

            //创建链接池
            jedisPool = new JedisPool(jedisPoolConfig, "hadoop102");

            //获取链接
            Jedis jedis = jedisPool.getResource();

            return jedis;
        }else {
            return jedisPool.getResource();
        }

    }

    //关闭连接池方法
    public static void closeJedisPool(){
        if (jedisPool!=null){
            jedisPool.close();
        }
    }




    public static void main(String[] args) {
        Jedis jedis = JedisPool_Test.getJedis();
        //通常情况下：对于写库操作不需要返回值   对于查库需要返回值
        //特殊情况：如果写库操作有返回值，并且要根据返回值的内容做进一步处理，则需要返回
        jedis.sadd("set0718", "banzhang", "zuzhang");

        //归还链接
        jedis.close();

        //关闭链接池
        JedisPool_Test.closeJedisPool();

    }
}
